$(document).on('ready', function(e)
{
  /*
   * Mostrar/Ocultar datos de los conyugues/registrado dependiendo del tipo
   * de extracto seleccionado
   */
  $('#tipo_extr').on('change', function(e)
  {
    if(this.value == 2){
      $('#datos_registrado').hide();
      $('#datos_conyuges').show();
    } else {
      $('#datos_registrado').show();
      $('#datos_conyuges').hide();
    }
  });
  
  /*
   * Eventos del dialogo para agregar nuevo tipo de identificación
   */
  $('#modal_agregar_identificacion').on('shown', function(e)
  {
    $('#tipo_identificacion').val('').focus();
  });

  /*
   * Eventos del dialogo para agregar nuevo documento probatorio
   */
   $('#modal_agregar_doc_probatorio').on('shown', function(e)
  {
    $('#nuevo_doc_probatorio_nombre').val('').focus();
  });
  
  /*
   * Enviar los datos para agregar nuevo tipo identificacion
   */
  $('#frm_agregar_identificacion').on('submit', function(e)
  {
    e.preventDefault();
    Quark.ajax('editar-expediente/ajax-agregar-tipo-identificacion', {
      data: $(this).serialize(),
      beforeSend: function()
      {
        if($('#tipo_identificacion').trimVal().val() == ''){
          return false;
        } else {
          $('#btn_agregar_identificacion').sahib_disablemation('disable');
          return true;
        }
      },
      complete: function()
      {
        $('#btn_agregar_identificacion').sahib_disablemation('enable');
      },
      success: function(Data)
      {
        // Ocultar dialogo modal
        $('#modal_agregar_identificacion').modal('hide');
        
        // Agregar la nueva opcion al select y seleccionarla
        $('#solicitante_identificacion').prepend(
          $('<option>').val(Data.result.id).text(Data.result.nombre)
        ).val(Data.result.id).focus();
      },
      fail: function(Data)
      {
        Juridico.mostrarError(Data.message);
      }
    });
  });

  /*
   * Enviar datos para agregar nuevo documento probatorio
   */
  $('#frm_agregar_nuevo_doc_probatorio').on('submit', function(e)
  {
    e.preventDefault();
    Quark.ajax('editar-expediente/ajax-agregar-nuevo-doc-probatorio',{
      data: $('#frm_agregar_nuevo_doc_probatorio').serialize(),
      beforeSend: function()
      {
        if($('#nuevo_doc_probatorio_nombre').trimVal().val() == ''){
          return false;
        } else {
          $('#btn_agregar_nuevo_doc_probatorio').sahib_disablemation('disable');
          return true;
        }
      },
      complete: function()
      {
        $('#btn_agregar_nuevo_doc_probatorio').sahib_disablemation('enable');
      },
      success: function(Data)
      {
        $('#modal_agregar_doc_probatorio').modal('hide');
        
        // Agregar el nuevo elemento a la lista de documentos probatorios
        var $NewLabel = $('<label>').addClass('checkbox');
        var $NewCheckbox = $('<input>').attr({
          type: 'checkbox',
          value: Data.result.id
        });
        $NewLabel.append($NewCheckbox,
          $('<span>').attr({id: 'doc_probatorio_' + Data.result.id}).text(Data.result.nombre)
        );
        $('#lista_docs_probatorios').append($NewLabel);
      },
      fail: function(Data)
      {
        Juridico.mostrarError(Data.message);
      }
    });
  });
  
  /*
   * Botones para copiar los datos del solicitante a otros controles
   */
  $('.btn_copiar_solicitante').on('click', function(e)
  {
    e.preventDefault();
    
    var nombre = $('#solicitante_nombre').val();
    var ape_pat = $('#solicitante_ape_pat').val();
    var ape_mat = $('#solicitante_ape_mat').val();
    
    switch($(this).data('copiar-en')){
      case 'registrado':
        $('#nombre').val(nombre);
        $('#ape_pat').val(ape_pat);
        $('#ape_mat').val(ape_mat);
        break;
      case 'el_conyuge':
        $('#el_nombre').val(nombre);
        $('#el_ape_pat').val(ape_pat);
        $('#el_ape_mat').val(ape_mat);
        break;
      case 'la_conyuge':
        $('#la_nombre').val(nombre);
        $('#la_ape_pat').val(ape_pat);
        $('#la_ape_mat').val(ape_mat);
        break;
    }
  });
  
  /*
   * Cargar lista de oficialias al cambiar de municipio 
   */
  $('#municipio').on('change', function(e)
  {
    var $SelectElementOficialia = $('#oficialia');
    
    Quark.ajax('juridico/ajax-cargar-oficialias',{
      data: {municipio: this.value},
      beforeSend: function()
      {
        $SelectElementOficialia.empty().append(
          $('<option>').text('Cargando...')
        ).sahib_disablemation('disable');
      },
      complete: function()
      {
        $SelectElementOficialia.sahib_disablemation('enable');
      },
      success: function(Data)
      {
        // Llenar el select de oficialias con la nueva lista
        $SelectElementOficialia.empty();
        for(var i in Data.result){
          $SelectElementOficialia.append(
            $('<option>').val(Data.result[i].cve_oficialia)
              .text(Data.result[i].descripcion + ' #' + Data.result[i].cve_oficialia)
          );
        }
        // Seleccionar automaticamente el valor por default SOLO UNA VEZ
        if($SelectElementOficialia.data('default') != '0'){
          $SelectElementOficialia.val($SelectElementOficialia.data('default'));
          $SelectElementOficialia.data('default', '0');
        }
      },
      fail: function(Data)
      {
        Juridico.mostrarError(Data.message);
      }
    });
  });

  if($('#municipio').data('default') != '0'){
    $('#municipio').val($('#municipio').data('default'));
    $('#municipio').trigger('change');
  }
  
  /*
   * Botón para agregar articulos de fundamento de resolucion
   */
  $('#btn_agregar_fundamento_resolucion').on('click', function(e)
  {
    e.preventDefault();
    
    var articulo_texto = $('#fundamento_resolucion')
      .find('option:selected').text().replace(/^Artículo\s+/i, '');
      
    $('#resolucion_fundamentos').append("\n" + articulo_texto.toUpperCase());
  });

  /*
   * Checboxes de documentos probatorios
   */
  $('#lista_docs_probatorios input[type=checkbox]').live('click',
    function(e)
    {
      var $Parent = $(this).parent();
      if(this.checked){
        $Parent.addClass('checked');
      } else {
        $Parent.removeClass('checked');
      }
    });

  /*
   * Boton para agregar los documentos probatorios seleccionados
   */
  $('#btn_agregar_docs_probatorios').on('click', function(e)
  {
    e.preventDefault();
    $('#lista_docs_probatorios input[type=checkbox]:checked').each(function(i, CheckBox)
    {
      ListaDocsProbatorios.agregar(CheckBox.value, $('#dueno_doc_probatorio').val());
    });
  });

  /** 
   * Enviar datos del expediente
   */
  $('#frm_expediente').on('submit', function(e)
  {
    var $BtnGuardar = $('#btn_guardar');

    // Serializar la lista de documentos probatorios presentados
    $('#docs_probatorios_json').val( ListaDocsProbatorios.serialize() );

    Quark.ajax('editar-expediente/ajax-guardar', {
      data: $(this).serialize(),
      beforeSend: function()
      {
        $BtnGuardar.sahib_disablemation('disable');
      },
      complete: function()
      {
        $BtnGuardar.sahib_disablemation('enable');
      },
      success: function(Data)
      {
        alert('OK!');
      },
      fail: function(Data)
      {
        if(Data.result == null){
          Juridico.mostrarError(Data.message);
        } else {
          $('#' + Data.result).focus();
          alert(Data.message);
        }
      }
    });
  });
});

var ListaDocsProbatorios = new (function()
{
  var _documentos = [];

  this.remover = function(doc_index){
    delete _documentos[doc_index];
    $('#doc_probatorio_presentado_' + doc_index).remove();
  }

  this.agregarEnDOM = function(doc_index)
  {
    var $Row = $('<tr id="doc_probatorio_presentado_' + doc_index + '">');
    
    // Texto
    $Row.append(
      
      $('<td>').text(
        $('#doc_probatorio_' + _documentos[doc_index].doc_id).text()
      ),
      $('<td>').text(
        $('#dueno_doc_probatorio option[value=' + _documentos[doc_index].owner_id
          + ']').text()
      ),
      $('<td>').append(

        new DropdownButton({
          icon: 'icon-trash icon-white',
          classes: 'btn-warning btn-small',
          dropdown_title: '¿Borrar documento probatorio de la lista?',
          options:[
            {title: 'No', onClick: null},
            {title: 'Sí', onClick: function(e)
            {
              e.preventDefault();
              ListaDocsProbatorios.remover(doc_index);
            }}
          ]
        })
      )/* END: <td>.append(DropdownButton) */
    ); /* END $Row.append() */

    $('#lista_docs_probatorios_presentados').append($Row);
  }

  /**
   * Serializa toda la lista de documentos a formato JSON
   */
  this.serialize = function()
  {
    var data = [];
    for( i in _documentos){
      data.push( '{"doc_id":' + _documentos[i].doc_id
        + ',"owner_id":' + _documentos[i].owner_id + '}' );
    }
    return '[' + data.join(',') + ']';
  }

  this.agregar = function(doc_probatorio_id, owner_id)
  {
    _documentos.push({
      doc_id: doc_probatorio_id,
      'owner_id': owner_id
    });
    this.agregarEnDOM(_documentos.length - 1);

    // Desmarcar todos los documentos probatorios de la lista
    $('label.checkbox').removeClass('checked')
    .find('input:checkbox').attr('checked', false);
  }
})();
